前端頁面的顯示總少不了後端的資料
要資料總會遇到網路問題,不是掉線就是延遲
在重要的資料還沒回來之前,前端頁面可以呈現 ex: 正在玩命加載中... 等圖片或字樣
或者先展示現其他已經回來了的資料
又或者當重要的資料卡住了、正在處理中
前端可以等待處理完畢、收到資料的那一刻,再進行後續的動作
ex: 等我(前端)真的收到錢了,再寄出貨品給你
以上各種屬於『如果OO好了再通知我』、『XX還沒回來,我先做ABC』的一連串事件
因為不是同時進行處理的,所以稱為 異步處理、非同步事件
非同步處理方式有很多種
不同框架使用的寫法也都不盡相同
Javascript
有promise
、async
、await
可以使用jQuery
也有自己的Ajax deferred
寫法Angular
直接導入 RxJS函式庫 來處理非同步事件,RxJS (Reactive Extensions)是用Typescript
寫成的,是對網頁進行非同步事件的封裝此舉導致要學
Angular
的人,從此多了一樣東西要學
而接下來的RxJS是 Angular
的重頭戲
為了模擬現實環境,我建立了兩個API
可點擊以下網址,或者透過 Postman
對以下網址發送 GET
方法請求
接下來會透過 http.get
來訪問頁面取得資源
開啟一個新的Angular
專案 project03
與前一次相同,透過ng cli新建一個store
元件
> ng g c store
修改app.component.html
,把 store
元件放到畫面上顯示
<app-store></app-store>
修改store.component.ts
,把HttpClient
服務,注入進元件內,取名為http
...
import { HttpClient } from '@angular/common/http';
...
constructor(private http: HttpClient) {
let url = 'https://63403667d1fcddf69cb402b7.mockapi.io/api/v1/weapons';
this.http.get(url).subscribe(result => {
console.log(result);
});
}
...
接著務必在app.module.ts
中新增這兩行
import HttpClient模組進專案內使用
...
import { HttpClientModule } from '@angular/common/http';
...
@NgModule({
...
imports: [
BrowserModule,
HttpClientModule
],
...
結果畫面
可以看到確實從網路上要到資源、印出來哩~
RxJS的第一天,進度13%